]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspace: Unbreak reposition animation
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 13 Jun 2020 23:02:52 +0000 (01:02 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Sun, 14 Jun 2020 21:20:36 +0000 (21:20 +0000)
Commit 1ea22a5281c broke the window reposition animation when it
based the ::size-changed signal on the layout manager's bounding box
instead of the MetaWindow::size-changed signal.

That's happening because of the combination of:

  1. we adjust to window size changes immediately without animations
  2. closing a window triggers a change to a 0x0 bounding box which
     is not treated as a size change

Fix this by addressing the 2nd factor, and don't treat a change to
a 0x0 bounding box as size change.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2901

js/ui/workspace.js

index 3367f4d8d96724fc14a88795185bc0b80d13ca64..9d8f8db7a2ebe76acb0a9905081e8ab293d8e073 100644 (file)
@@ -236,7 +236,11 @@ var WindowClone = GObject.registerClass({
         this._stackAbove = null;
 
         this._windowContainer.layout_manager.connect(
-            'notify::bounding-box', () => this.emit('size-changed'));
+            'notify::bounding-box', layout => {
+                // A bounding box of 0x0 means all windows were removed
+                if (layout.bounding_box.get_area() > 0)
+                    this.emit('size-changed');
+            });
 
         this._windowDestroyId =
             this.realWindow.connect('destroy', () => this.destroy());